


class Demo
{
    static void Main()
    {
        // System.Console.WriteLine("变量定义与赋值----------------------------------");
        // // 定义一个整数变量age，并赋值为20。
        // // 定义一个双精度浮点数变量height，并赋值为1.75。
        // // 定义一个字符串变量name，并赋值为“张三”。
        // // 定义一个布尔变量isStudent，并赋值为true。
        // // 输出这些变量的值。

        // int age =20;
        // double height=1.75;
        // string name="张三";
        // bool isStudent=true;

        // System.Console.WriteLine(age);
        // System.Console.WriteLine(height);
        // System.Console.WriteLine(name);
        // System.Console.WriteLine(isStudent);

        // System.Console.WriteLine("数据类型转换----------------------------------");

        // // 定义一个字符串变量numStr，并赋值为"123"。
        // // 将numStr转换为整数类型，并与456相加。
        // // 将结果转换回字符串类型，并输出。
        // string numStr = "123";
        // int num = int.Parse(numStr);
        // int sum = num + 456;
        // string res = sum.ToString();
        // Console.WriteLine(res);  // 输出：579

        // System.Console.WriteLine("算术运算符----------------------------------");

        // // 定义两个整数变量a和b，分别赋值为10和3。
        // // 计算a + b、a - b、a * b、a / b和a % b的结果，并分别输出。

        // int a = 10;
        // int b = 3;
        // Console.WriteLine(a + b);  // 13
        // Console.WriteLine(a - b);  // 7
        // Console.WriteLine(a * b);  // 30
        // Console.WriteLine(a / b);  // 3 (整数除法)
        // Console.WriteLine(a % b);  // 1

        // System.Console.WriteLine("比较和逻辑运算符----------------------------------");

        // // 定义两个整数变量x和y，分别赋值为20和30。
        // // 使用比较运算符（==、!=、>、<、>=、<=）比较x和y，并输出结果。
        // // 使用逻辑运算符（&&、||、!）组合条件，例如x > 10 && y < 40，并输出结果

        // int x = 20;
        // int y = 30;
        // Console.WriteLine(x == y);  // false
        // Console.WriteLine(x != y);  // true
        // Console.WriteLine(x > y);   // false
        // Console.WriteLine(x < y);   // true
        // Console.WriteLine(x >= y);  // false
        // Console.WriteLine(x <= y);  // true
        // Console.WriteLine(x > 10 && y < 40);  // true
        // Console.WriteLine(x > 10 || y < 40);  // true
        // Console.WriteLine(!(x > 10 && y < 40)); // false

        // System.Console.WriteLine("条件语句----------------------------------");

        // //编写一个程序，根据用户输入的分数（0-100），判断成绩等级（A、B、C、D、E）并输出。
        // //90-100：A
        // //80-89：B
        // //70-79：C
        // //60-69：D
        // //0-59：E
        // Console.Write("请输入数字：");
        // string input = Console.ReadLine();

        // if(int.TryParse(input, out int number))
        // {
        //     if(number >= 90 && number <= 100){
        //         Console.WriteLine("A");
        //     }else if(number >= 80 && number <= 89){
        //         Console.WriteLine("B");
        //     }else if(number >= 70 && number <= 79){
        //         Console.WriteLine("C");
        //     }else if(number >= 60 && number <= 69){
        //         Console.WriteLine("D");
        //     }else if(number >= 0 && number <= 59){
        //         Console.WriteLine("E");
        //     }
        // }else
        // {
        //     Console.WriteLine("输入的不是有效数字");
        // }

        // System.Console.WriteLine("循环语句----------------------------------");

        // // 编写一个程序，使用for循环输出1到10的平方。
        // // 编写一个程序，使用while循环计算1到100的累加和。

        // int i = 1;
        // for (;i <= 10; i++){
        //     Console.WriteLine(i);
        // }

        // int h = 0;
        // while (i <= 100)
        // {
        //     h += i;
        //     i++;  // 必须添加这行才能使循环正常结束
        // }
        // Console.WriteLine($"1到100的和是：{h}");

        // Console.WriteLine("方法定义与调用----------------------------------");

        // // 定义一个方法Add，接收两个整数参数，返回它们的和。
        // // 在Main方法中调用Add方法，并输出结果。
        // var x = new Demo();

        // int y =x.Add(1,2);

        // System.Console.WriteLine(y);

        // Console.WriteLine("方法重载----------------------------------");

        // // 定义一个方法Multiply，接收两个整数参数，返回它们的乘积。
        // // 重载Multiply方法，使其可以接收两个浮点数参数。
        // // 在Main方法中分别调用这两个Multiply方法，并输出结果。

        // var x=new Demo();
        // int y=x.Multiply(1,2);
        // System.Console.WriteLine(y);

        // float n =x.Multiply(1.1f,2.2f);
        // System.Console.WriteLine(n);
        // Console.WriteLine("字符串拼接----------------------------------");

        // 定义两个字符串变量firstName和lastName，分别赋值为“张”和“三”。
        // 使用字符串拼接将firstName和lastName组合成一个完整的姓名，并输出。

        // string firstName="张";
        // string lastName="三";
        // System.Console.WriteLine(firstName+lastName);

        // Console.WriteLine("字符串方法----------------------------------");

        // 定义一个字符串变量sentence，赋值为“Hello, World!”。
        // 使用ToUpper方法将sentence转换为大写，并输出。
        // 使用Replace方法将sentence中的“World”替换为“C#”，并输出。

        // string sentence="Hello,World!";
        // string x=sentence.ToUpper();
        // System.Console.WriteLine(x);
        // string y=sentence.Replace("World!","C#");
        // System.Console.WriteLine(y);

        // Console.WriteLine("简单的计算器----------------------------------");

        // 编写一个程序，提示用户输入两个数字和一个运算符（+、-、*、/）。
        // 根据用户输入的运算符，计算结果并输出。

        // Console.Write("请输入第一个数字");
        // int x = int.Parse(Console.ReadLine());
        // Console.WriteLine($"第一个数是:{x}");
        // Console.WriteLine("请输入第二个数字");
        // int y=int.Parse(Console.ReadLine());
        // Console.WriteLine($"第二个数是:{y}");
        // Console.WriteLine("请输入运算符");
        // string z=Console.ReadLine();
        // Console.WriteLine($"输入的运算符是{z}");

        // switch(z)
        // {
        //     case "+":
        //     Console.WriteLine($"{x}+{y}={x+y}");
        //     break;
        //     case "-":
        //     Console.WriteLine($"{x}-{y}={x-y}");
        //     break;
        //     case "*":
        //     Console.WriteLine($"{x}*{y}={x*y}");
        //     break;
        //      case "/":
        //     Console.WriteLine(y != 0 ? $"{x}/{y}={(double)x/y}" : "除数不能为0");
        //     break;
        //     default:
        //     Console.WriteLine("不支持的运算符");
        //     break;
        // }

        // Console.WriteLine("猜数字游戏----------------------------------");

        // 编写一个程序，生成一个1到100之间的随机数。
        // 提示用户输入一个数字，判断用户输入的数字是否等于随机数。
        // 如果用户猜对了，输出“恭喜你，猜对了！”；如果猜错了，提示用户继续猜测，直到猜对为止。

        // Random rand = new Random();
        // int x = 1;
        // int y = 101;
        // int randNumber = rand.Next(x, y);
        // Console.WriteLine("请输入一个数");

        // while (true)
        // {
        //     bool parseState = int.TryParse(Console.ReadLine(), out int z);
        //     if (parseState)
        //     {
        //         Console.WriteLine($"你输入的数字是：{z}");
        //         if (z == randNumber)
        //         {
        //             Console.WriteLine("恭喜你");
        //             break;
        //         }
        //         else if (z > randNumber)
        //         {
        //             Console.WriteLine("猜大了");
        //         }
        //         else
        //         {
        //             Console.WriteLine("猜小了");
        //         }
        //     }
        //     else { System.Console.WriteLine("输入的不是数字"); }


        // }

        // Console.WriteLine("集合操作练习----------------------------------");
        // 创建一个List<int>集合，包含10个随机整数（范围在1 - 100之间）。然后完成以下操作：
        // 使用Add方法添加一个整数101。
        // 使用Remove方法移除第一个出现的整数50（如果存在）。
        // 使用Insert方法在索引3的位置插入整数99。
        // 使用Sort方法对集合进行升序排序。
        // 遍历集合并打印出每个元素。
        // 要求：编写完整的代码，展示集合的创建、添加、移除、插入、排序和遍历操作。
        
        // Random rnd=new Random();
        // List<int> arr=new List<int>(){3,1,4,2};

        // for(int i=1; i <= 100; i++){
        //     arr.Add(rnd.Next(1,101));
        // }
        // Console.WriteLine("生成的随机数：");
        // Console.WriteLine(string.Join(", ", arr.Take(10)));
        
        // arr.Add(101);
        // Console.WriteLine(string.Join(", ", arr.Take(1)));
        // int x = arr[0];  
        // if(x == 50){     
        // arr.RemoveAt(0);  
        //  Console.WriteLine("已删除第一个元素50");
        // }else{
        // Console.WriteLine("第一个元素不是50，当前值为：" + x);
        // }
        // arr.Insert(3,99);
        // Console.WriteLine(string.Join(", ", arr.Take(5)));
        // arr.Sort();
        // Console.WriteLine(string.Join(", ", arr.Take(5)));
        // foreach (var item in arr){

        // Console.WriteLine(item);

        // }

        // Console.WriteLine("集合转换练习----------------------------------");

        // 题目：创建一个Dictionary<string, int>集合，包含以下键值对：
        // "apple"对应3
        // "banana"对应5
        // "orange"对应2   
        // 然后将该字典的键和值分别转换为两个List<string>和List<int>集合。
        // 要求：使用集合的Keys和Values属性进行转换，并打印出转换后的两个列表的内容。

        // Dictionary<string, int> dict = new Dictionary<string, int>()
        // {
        //     {"apple", 3},
        //     {"banana", 5},
        //     {"orange", 2}
        // };

        // List<string> keys = dict.Keys.ToList();
        // List<int> values = dict.Values.ToList();

        // Console.WriteLine("键列表：");
        // Console.WriteLine(string.Join(", ", keys));

        // Console.WriteLine("\n值列表：");
        // Console.WriteLine(string.Join(", ", values));

        Console.WriteLine("方法参数练习----------------------------------");

        // 题目：编写一个方法PrintStudentInfo，接收以下参数：
        // string name：学生姓名
        // int age：学生年龄
        // string major：学生专业（可选参数，默认值为"未指定"）
        // params string[] hobbies：学生爱好（可变参数）

        var studentInfo = PrintStudentInfo();
        Console.WriteLine($"姓名：{studentInfo.Item1}，年龄：{studentInfo.Item2}，专业：{studentInfo.Item3}");
        Console.WriteLine("爱好：" + string.Join(",", studentInfo.Item4));


    }

    // public int Add(int a, int b)
    // {

    //     int sum = a + b;
    //     return sum;
    // }

    // public int Multiply(int a,int b){
    //     int sum=a*b;
    //     return sum;
    // }
    // public float Multiply(float a,float b){
    //     float xum=a*b;
    //     return xum;
    // }


    public (string Name, int Age, string Major, string[] Hobbies) GetStudentInfo()
    {
        Console.WriteLine("请输入名字:");
        string name = Console.ReadLine()?.Trim() ?? string.Empty;
    
        int age = 0;
        bool validAge = false;
        while(!validAge)
    {
        Console.WriteLine("请输入年龄:");
        validAge = int.TryParse(Console.ReadLine(), out age) && age > 0;
    }
    
        Console.WriteLine("请输入专业:");
        string major = Console.ReadLine()?.Trim() ?? string.Empty;
    
        Console.WriteLine("请输入爱好(多个爱好用逗号分隔):");
        string[] hobbies = (Console.ReadLine()?.Trim() ?? "").Split(',', StringSplitOptions.RemoveEmptyEntries);
    
        return (name, age, major, hobbies);
}



}
